package com.qing.qingcodegenerate.ai;

import dev.langchain4j.service.SystemMessage;
import reactor.core.publisher.Flux;

import java.util.Map;

/**
 * AI代码生成类型智能路由服务
 * 使用结构化输出直接返回枚举类型
 *
 * @author yupi
 */
public interface AiAssistantService {

    /**
     * 根据用户需求智能选择代码生成类型
     *
     * @param userPrompt 用户输入的需求描述
     * @return 推荐的代码生成类型
     */
    @SystemMessage(fromResource = "prompt/codegen-routing-system-prompt.txt")
    Map<String, String> routeCodeGenType(String userPrompt);

    /**
     * 优化用户提示词（流式）
     *
     * @param userPrompt 用户原始提示词
     * @return 优化后的提示词流
     */
    @SystemMessage(fromResource = "prompt/user-prompt-optimization-system-prompt.txt")
    Flux<String> optimizePromptStream(String userPrompt);
}
